package model

import (
	"time"

	"gorm.io/gorm"
)

// Recruitment 招聘模型
// 用于管理公司的招聘信息，包括职位发布、招聘状态等
type Recruitment struct {
	ID        uint           `gorm:"primarykey" json:"id"` // 招聘记录ID，主键
	CreatedAt time.Time      `json:"created_at"`           // 记录创建时间
	UpdatedAt time.Time      `json:"updated_at"`           // 记录更新时间
	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`       // 软删除时间

	Title       string    `gorm:"size:100;not null" json:"title"`     // 职位标题，招聘岗位的名称
	Department  string    `gorm:"size:50;not null" json:"department"` // 招聘部门，发布招聘的部门名称
	Count       int       `gorm:"not null" json:"count"`              // 招聘人数，需要招聘的人员数量
	Description string    `gorm:"size:1000" json:"description"`       // 职位描述，包括工作内容、职责等详细说明
	Requirement string    `gorm:"size:1000" json:"requirement"`       // 职位要求，包括学历、经验、技能等要求
	Salary      string    `gorm:"size:50" json:"salary"`              // 薪资范围，职位提供的薪资待遇区间
	Location    string    `gorm:"size:100" json:"location"`           // 工作地点，工作岗位所在的地理位置
	Status      int       `gorm:"not null;default:1" json:"status"`   // 状态：1-招聘中（正在招聘），2-已暂停（暂停招聘），3-已结束（招聘完成）
	StartDate   time.Time `gorm:"not null" json:"start_date"`         // 开始日期，招聘信息的发布时间
	EndDate     time.Time `json:"end_date"`                           // 结束日期，招聘信息的截止时间
	Publisher   uint      `gorm:"not null" json:"publisher"`          // 发布人ID，发布招聘信息的HR或管理员ID

	User User `gorm:"foreignKey:Publisher" json:"user"` // 关联发布人信息，建立与User模型的关联关系
}
